<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>单页面前端javascript函数写法参考</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1">
    <script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
</head>
<body style="position: fixed; left: 0; right: 0; top: 0; bottom: 0;">
</body>
</html>
<script>

    var golableObject = {};// 然后通过golableObject.pageFunction.init() 去调用方法，实现了内部函数的在全局调用，同时减少了全局变量
    $(function () {
        /**
        *
        *pageFunc  是单页面函数，用于一个页面内的逻辑处理
        *publicFunc 是对外接口函数，需要通过new 一个对象来调用，通常是跨页面的公共代码
        *userFunc 是继承publicFunc 
		* 如果存在大量的异步操作需要使用when.js 将异步操作变为同步操作，方便解耦。
        *
        ****/
        var pageFunc = {
            workid: "",//注释
            userlist: [{ name: "apple", id: "1" }, { name: "windows", id: "2" }],// 注释
            init: function () {
                // 在这里完成所有数据的初始化工作
                this.workid = "123";
                console.log("开始初始化工作");
                this.bindEvent();
                this.startProcess();
            },
            bindEvent: function () {
                console.log("绑定所有事件");// 按照绑定对象在页面中的 顺序来编写，具体实现需要在另外的逻辑函数中实现，不能直接在绑定函数中写
				 $("#myclass").click(function(this){
				 pageFunc.doEvent(this);
				 });
            },
			doEvent:function(e){
			
			},
            doSomeThing: function (parame) {
                console.log("执行具体业务逻辑" + parame);
                return 1;
            },
            startProcess: function () {
                console.log("开始工作");
                var rvalue = this.doSomeThing();
                alert("输出的信息是:" + rvalue);
            }
        };
        golableObject.pageFunction = pageFunc;
        pageFunc.init();
    });

    publicFunc = function (e) {
        this.p = 1;// 构造函数 定义成员变量
        this.my = 2;
    };
   
    publicFunc.prototype.getPublicInfo = function () {
        alert(this.p);// 定义一个成员函数
    };

    userFunc = function (e) {
        this.inheritFrom = publicFunc;
        this.inheritFrom(e);// 调用父类的构造函数
        this.p = 3;// 覆盖父类的属性
    };
    userFunc.prototype = new publicFunc();//继承父类的其他函数

    // 扩充自己的方法
    userFunc.prototype.getUserInfo = function () {
        alert(this.p);
    };

</script>
